Jak na jmeno unity
Otázka od: Lstiburek Pavel
22. 10. 2002 8:44
Nevite nekdo zda existuje nejaky zpusob jak za behu (nebo nejakym makrem)
zjistit jmeno unity ? Potreboval bych zjistovat udaje u unitach a jeden z
nich je jeji jmeno. Nekde by to byt melo, protoze debuger to dokaze !
Pavel
Odpovedá: Petr Vones
22. 10. 2002 15:46
From: "Lstiburek Pavel" <Lstiburek@ceb.cz>
> Nevite nekdo zda existuje nejaky zpusob jak za behu (nebo nejakym makrem)
> zjistit jmeno unity ? Potreboval bych zjistovat udaje u unitach a jeden z
> nich je jeji jmeno. Nekde by to byt melo, protoze debuger to dokaze !
Debugger vi totiz neco, co nevi tvoje aplikace Muzes pouzit funkci
ModuleByLevel z JCL, je ovsem nutne do aplikace pridat jeste dalsi informace
(cca 12% velikosti MAP filu) ktere toto umoznuji zjistovat za behu aplikace,
podrobnosti v Readme.txt. Priklady pouziti:
uses
JclDebug;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ModuleByLevel);
// Zobrazi: Unit1
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(GetLocationInfoStr(Caller));
// Zobrazi: [0045F941] Unit1.TForm1.Button2Click (Line 38, "Unit1.pas")
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ShowMessage(GetLocationInfoStr(Caller, True, True, True));
// Zobrazi: [0045F941]{Project1.exe} Unit1.TForm1.Button2Click (Line 38,
"Unit1.pas" + 1) + $A
end;
Vice na:
http://sourceforge.net/project/showfiles.php?group_id=47514&release_id=100652
http://delphi-jedi.org/CODELIBJCL
Petr Vones
Odpovedá: Dalibor Toman
22. 10. 2002 14:37
> Debugger vi totiz neco, co nevi tvoje aplikace Muzes pouzit
funkci
> ModuleByLevel z JCL, je ovsem nutne do aplikace pridat jeste dalsi
informace
> (cca 12% velikosti MAP filu) ktere toto umoznuji zjistovat za behu
aplikace,
je pravdepodobne, ze to jde i bez toho (minimalne ziskat jmena
pouzitych knihoven) - pokud se juknete na konec libovolneho execka
kompilovaneho v Delphi je tam seznam jmen pouzitych knihoven vcetne
jmena projektu
D. Toman
Odpovedá: Petr Vones
22. 10. 2002 14:16
From: "Dalibor Toman" <dtoman@fortech.cz>
> je pravdepodobne, ze to jde i bez toho (minimalne ziskat jmena
> pouzitych knihoven) - pokud se juknete na konec libovolneho execka
> kompilovaneho v Delphi je tam seznam jmen pouzitych knihoven vcetne
> jmena projektu
Presneji receno je to v PACKAGEINFO resource a lze to vypsat do citelne
podoby, jsou na to funkce v Delphi RTL nebo JclPeImage. Jenze tim ziskas jen
seznam unitu, ne jmeno unitu v miste volani z aplikace, na co predpokladam ze
byl puvodni dotaz. Jeste je mozne ziskat jmeno unitu z tridy pomoci RTTI, ale
to asi take neni presne ono.
Petr Vones